package com.yunduansing.core.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * 文件上传工具类
 * 需要结合common-fileupload
 * @author yunduansing
 *
 */
public class UploadUtil {
	/**
	 * 单文件上传
	 * 默认文件上传路径为：/upload
	 * 可以通过指定path参数指定上传路径
	 * @param file 要上传的文件
	 * @param path 要保存的路径
	 * @param old 旧文件路径，若存在的话，则会删除此旧文件
	 * @return 若上传成功则返回工具ResultUtil的data属性会包含保存路径
	 */
	public static ResultUtil upload(File file,String path,String old){
		try{
			if(path.isEmpty())
				path="/upload/";
			if(!old.isEmpty())
				delete(old);
		    File dir=new File(path);
			if(!dir.exists())
				dir.mkdirs();
			String filepath=path+UUID.randomUUID().toString()+file.getName();
			return ResultUtil.init(true,"上传成功",filepath);
		}catch(Exception e){
			return ResultUtil.init(e);
		}
	}
	/**
	 * 多文件上传
	 * 默认文件上传路径为：/upload
	 * 可以通过指定path参数指定上传路径
	 * @param files 要上传的文件列表
	 * @param path 要保存的路径
	 * @param old 旧文件路径，若存在的话，则会删除此旧文件
	 * @return
	 */
	public static ResultUtil upload(List<File> files,String path,String old){
		try{
			if(path.isEmpty())
				path="/upload/";
			if(!old.isEmpty())
				delete(old);
		    File dir=new File(path);
			if(!dir.exists())
				dir.mkdirs();
			List<String> list=new ArrayList<String>();
			for(File item:files){
				String filepath=path+UUID.randomUUID().toString()+item.getName();
				list.add(filepath);
			}
			return ResultUtil.init(true,"上传成功");
		}catch(Exception e){
			return ResultUtil.init(e);
		}
	}
	
	/**
	 * 根据文件路径删除文件
	 * @param path 待删除的文件路径
	 * @return
	 */
	public static ResultUtil delete(String path){
		try{
			File file=new File(path);
			if(file.exists()&&file.isFile())
				file.delete();
			return ResultUtil.init();
		}catch(Exception e){
			return ResultUtil.init(e);
		}
	}
	/**
	 * 根据文件对象删除文件
	 * @param file 待删除的文件对象
	 * @return
	 */
	public static ResultUtil delete(File file){
		try{
			if(file.exists()&&file.isFile())
				file.delete();
			return ResultUtil.init();
		}catch(Exception e){
			return ResultUtil.init(e);
		}
	}
}
